<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>fdk-aac: original/libSBRdec/src/lpp_tran.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">fdk-aac
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_ed137715e08969a186ec660e8ae6e2fb.html">original</a></li><li class="navelem"><a class="el" href="dir_222de58a05c98cc4a78309a37525cd28.html">libSBRdec</a></li><li class="navelem"><a class="el" href="dir_c997d48ad60fbe63e2ba342b9c79db98.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">lpp_tran.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Low Power Profile Transposer.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;sbrdecoder.h&quot;</code><br />
<code>#include &quot;hbe.h&quot;</code><br />
<code>#include &quot;<a class="el" href="qmf_8h_source.html">qmf.h</a>&quot;</code><br />
</div>
<p><a href="lpp__tran_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_a_t_c_h___p_a_r_a_m.html">PATCH_PARAM</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_w_h_i_t_e_n_i_n_g___f_a_c_t_o_r_s.html">WHITENING_FACTORS</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_t_r_a_n_s_p_o_s_e_r___s_e_t_t_i_n_g_s.html">TRANSPOSER_SETTINGS</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">SBR_LPP_TRANS</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a43625c6ba043c773a1fd3294faed5965"><td class="memItemLeft" align="right" valign="top"><a id="a43625c6ba043c773a1fd3294faed5965"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>QMF_OUT_SCALE</b>&#160;&#160;&#160;8</td></tr>
<tr class="separator:a43625c6ba043c773a1fd3294faed5965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dc76731619369783bf38637e34ecce5"><td class="memItemLeft" align="right" valign="top"><a id="a3dc76731619369783bf38637e34ecce5"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NOISE_ENVELOPES</b>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a3dc76731619369783bf38637e34ecce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6a2825a24a7067c93900eb30777941f"><td class="memItemLeft" align="right" valign="top"><a id="af6a2825a24a7067c93900eb30777941f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NOISE_COEFFS</b>&#160;&#160;&#160;5</td></tr>
<tr class="separator:af6a2825a24a7067c93900eb30777941f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cfbef2f4b321d0fe2acbf9a732fe893"><td class="memItemLeft" align="right" valign="top"><a id="a2cfbef2f4b321d0fe2acbf9a732fe893"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NUM_NOISE_VALUES</b>&#160;&#160;&#160;(MAX_NOISE_ENVELOPES * MAX_NOISE_COEFFS)</td></tr>
<tr class="separator:a2cfbef2f4b321d0fe2acbf9a732fe893"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfdbb236e90f2f0f7ec49fccc376e58c"><td class="memItemLeft" align="right" valign="top"><a id="adfdbb236e90f2f0f7ec49fccc376e58c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NUM_LIMITERS</b>&#160;&#160;&#160;12</td></tr>
<tr class="separator:adfdbb236e90f2f0f7ec49fccc376e58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6d46f530330316b9ca0b0d82a55c96b"><td class="memItemLeft" align="right" valign="top"><a id="af6d46f530330316b9ca0b0d82a55c96b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_ENVELOPES_LEGACY</b>&#160;&#160;&#160;5</td></tr>
<tr class="separator:af6d46f530330316b9ca0b0d82a55c96b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0c3a50fa0f216f7c4e1d40e40d4b98a"><td class="memItemLeft" align="right" valign="top"><a id="ae0c3a50fa0f216f7c4e1d40e40d4b98a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_ENVELOPES_USAC</b>&#160;&#160;&#160;8</td></tr>
<tr class="separator:ae0c3a50fa0f216f7c4e1d40e40d4b98a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a901d487f4a4ff00e7051b681250b0022"><td class="memItemLeft" align="right" valign="top"><a id="a901d487f4a4ff00e7051b681250b0022"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_ENVELOPES</b>&#160;&#160;&#160;MAX_ENVELOPES_USAC</td></tr>
<tr class="separator:a901d487f4a4ff00e7051b681250b0022"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01bff1555eef0f4a94d05cff05d584ca"><td class="memItemLeft" align="right" valign="top"><a id="a01bff1555eef0f4a94d05cff05d584ca"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_FREQ_COEFFS_DUAL_RATE</b>&#160;&#160;&#160;48</td></tr>
<tr class="separator:a01bff1555eef0f4a94d05cff05d584ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adea64ba1bcabffce21d4d9e598128573"><td class="memItemLeft" align="right" valign="top"><a id="adea64ba1bcabffce21d4d9e598128573"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_FREQ_COEFFS_QUAD_RATE</b>&#160;&#160;&#160;56</td></tr>
<tr class="separator:adea64ba1bcabffce21d4d9e598128573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99360c2780a0b962b4fbc1411cc7be25"><td class="memItemLeft" align="right" valign="top"><a id="a99360c2780a0b962b4fbc1411cc7be25"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_FREQ_COEFFS_FS44100</b>&#160;&#160;&#160;35</td></tr>
<tr class="separator:a99360c2780a0b962b4fbc1411cc7be25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec6d094207782e57213149a02053d6e7"><td class="memItemLeft" align="right" valign="top"><a id="aec6d094207782e57213149a02053d6e7"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_FREQ_COEFFS_FS48000</b>&#160;&#160;&#160;32</td></tr>
<tr class="separator:aec6d094207782e57213149a02053d6e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30a756d832439a56d2988768a320e05a"><td class="memItemLeft" align="right" valign="top"><a id="a30a756d832439a56d2988768a320e05a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NUM_ENVELOPE_VALUES</b>&#160;&#160;&#160;(MAX_ENVELOPES * MAX_FREQ_COEFFS)</td></tr>
<tr class="separator:a30a756d832439a56d2988768a320e05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae240a0846a66db9ba29072b4ffd58d0e"><td class="memItemLeft" align="right" valign="top"><a id="ae240a0846a66db9ba29072b4ffd58d0e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_GAIN_EXP</b>&#160;&#160;&#160;34</td></tr>
<tr class="separator:ae240a0846a66db9ba29072b4ffd58d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1edcf3323a4f47e51c16e810f0604ce4"><td class="memItemLeft" align="right" valign="top"><a id="a1edcf3323a4f47e51c16e810f0604ce4"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_GAIN_CONCEAL_EXP</b>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a1edcf3323a4f47e51c16e810f0604ce4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac881c31537436dfd5dbc603e1ea66da"><td class="memItemLeft" align="right" valign="top"><a id="aac881c31537436dfd5dbc603e1ea66da"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LPC_ORDER</b>&#160;&#160;&#160;2</td></tr>
<tr class="separator:aac881c31537436dfd5dbc603e1ea66da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0537dba7ca261f985f295b03449a1558"><td class="memItemLeft" align="right" valign="top"><a id="a0537dba7ca261f985f295b03449a1558"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_INVF_BANDS</b>&#160;&#160;&#160;MAX_NOISE_COEFFS</td></tr>
<tr class="separator:a0537dba7ca261f985f295b03449a1558"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e10617071cac705731ed0a77e7865a6"><td class="memItemLeft" align="right" valign="top"><a id="a7e10617071cac705731ed0a77e7865a6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NUM_PATCHES</b>&#160;&#160;&#160;6</td></tr>
<tr class="separator:a7e10617071cac705731ed0a77e7865a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae636173d5936adbed995a1352e72a997"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lpp__tran_8h.html#ae636173d5936adbed995a1352e72a997">SHIFT_START_SB</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ae636173d5936adbed995a1352e72a997"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">StaticSbrData</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Static memory areas, must not be overwritten in other sections of the encoder </p>
</div></td></tr>
<tr class="memitem:a841ae71ca1a279a695b3c4252f497d5b"><td class="memItemLeft" align="right" valign="top"><a id="a841ae71ca1a279a695b3c4252f497d5b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_FREQ_COEFFS</b>&#160;&#160;&#160;MAX_FREQ_COEFFS_QUAD_RATE</td></tr>
<tr class="separator:a841ae71ca1a279a695b3c4252f497d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ae6bbfa9fa4149f10520c53a6c7b23c59"><td class="memItemLeft" align="right" valign="top"><a id="ae6bbfa9fa4149f10520c53a6c7b23c59"></a>
typedef <a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">SBR_LPP_TRANS</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>HANDLE_SBR_LPP_TRANS</b></td></tr>
<tr class="separator:ae6bbfa9fa4149f10520c53a6c7b23c59"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a2752ea026f98aa3b0ea7bd2d9aee9e3f"><td class="memItemLeft" align="right" valign="top"><a id="a2752ea026f98aa3b0ea7bd2d9aee9e3f"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>INVF_MODE</b> { <br />
&#160;&#160;<b>INVF_OFF</b> = 0
, <b>INVF_LOW_LEVEL</b>
, <b>INVF_MID_LEVEL</b>
, <b>INVF_HIGH_LEVEL</b>
, <br />
&#160;&#160;<b>INVF_SWITCHED</b>
, <b>INVF_OFF</b> = 0
, <b>INVF_LOW_LEVEL</b>
, <b>INVF_MID_LEVEL</b>
, <br />
&#160;&#160;<b>INVF_HIGH_LEVEL</b>
, <b>INVF_SWITCHED</b>
<br />
 }</td></tr>
<tr class="separator:a2752ea026f98aa3b0ea7bd2d9aee9e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0ae9b351ec62b7898db3f2d487622ffe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lpp__tran_8h.html#a0ae9b351ec62b7898db3f2d487622ffe">lppTransposer</a> (<a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a> hLppTrans, <a class="el" href="struct_q_m_f___s_c_a_l_e___f_a_c_t_o_r.html">QMF_SCALE_FACTOR</a> *sbrScaleFactor, FIXP_DBL **qmfBufferReal, FIXP_DBL *degreeAlias, FIXP_DBL **qmfBufferImag, const int useLP, const int fPreWhitening, const int v_k_master0, const int timeStep, const int firstSlotOffset, const int lastSlotOffset, const int nInvfBands, INVF_MODE *sbr_invf_mode, INVF_MODE *sbr_invf_mode_prev)</td></tr>
<tr class="memdesc:a0ae9b351ec62b7898db3f2d487622ffe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform transposition by patching of subband samples. This function serves as the main entry point into the module. The function determines the areas for the patching process (these are the source range as well as the target range) and implements spectral whitening by means of inverse filtering. The function autoCorrelation2nd() is an auxiliary function for calculating the LPC coefficients for the filtering. The actual calculation of the LPC coefficients and the implementation of the filtering are done as part of <a class="el" href="lpp__tran_8cpp.html#a524aa88f1bd2cedb437ca6cde8a65cdb" title="Perform transposition by patching of subband samples. This function serves as the main entry point in...">lppTransposer()</a>.  <a href="lpp__tran_8h.html#a0ae9b351ec62b7898db3f2d487622ffe">More...</a><br /></td></tr>
<tr class="separator:a0ae9b351ec62b7898db3f2d487622ffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaefb4bb18220fd6159e63fd01f14fc77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lpp__tran_8h.html#aaefb4bb18220fd6159e63fd01f14fc77">lppTransposerHBE</a> (<a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a> hLppTrans, <a class="el" href="structhbe_transposer.html">HANDLE_HBE_TRANSPOSER</a> hQmfTransposer, <a class="el" href="struct_q_m_f___s_c_a_l_e___f_a_c_t_o_r.html">QMF_SCALE_FACTOR</a> *sbrScaleFactor, FIXP_DBL **qmfBufferReal, FIXP_DBL **qmfBufferImag, const int timeStep, const int firstSlotOffs, const int lastSlotOffs, const int nInvfBands, INVF_MODE *sbr_invf_mode, INVF_MODE *sbr_invf_mode_prev)</td></tr>
<tr class="separator:aaefb4bb18220fd6159e63fd01f14fc77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c11ee3203b158784887c3217904d8e0"><td class="memItemLeft" align="right" valign="top">SBR_ERROR&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lpp__tran_8h.html#a2c11ee3203b158784887c3217904d8e0">createLppTransposer</a> (<a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a> hLppTrans, <a class="el" href="struct_t_r_a_n_s_p_o_s_e_r___s_e_t_t_i_n_g_s.html">TRANSPOSER_SETTINGS</a> *pSettings, const int highBandStartSb, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *v_k_master, const int numMaster, const int usb, const int timeSlots, const int nCols, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *noiseBandTable, const int noNoiseBands, <a class="el" href="machine__type_8h.html#afff0ab3629a68bc1bb3b2a2f4296173f">UINT</a> fs, const int chan, const int overlap)</td></tr>
<tr class="memdesc:a2c11ee3203b158784887c3217904d8e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize one low power transposer instance.  <a href="lpp__tran_8h.html#a2c11ee3203b158784887c3217904d8e0">More...</a><br /></td></tr>
<tr class="separator:a2c11ee3203b158784887c3217904d8e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13e3d09ebd3d5afe2118961ee9483692"><td class="memItemLeft" align="right" valign="top">SBR_ERROR&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lpp__tran_8h.html#a13e3d09ebd3d5afe2118961ee9483692">resetLppTransposer</a> (<a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a> hLppTrans, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> highBandStartSb, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *v_k_master, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> numMaster, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *noiseBandTable, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> noNoiseBands, <a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> usb, <a class="el" href="machine__type_8h.html#afff0ab3629a68bc1bb3b2a2f4296173f">UINT</a> fs)</td></tr>
<tr class="memdesc:a13e3d09ebd3d5afe2118961ee9483692"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset memory for one lpp transposer instance.  <a href="lpp__tran_8h.html#a13e3d09ebd3d5afe2118961ee9483692">More...</a><br /></td></tr>
<tr class="separator:a13e3d09ebd3d5afe2118961ee9483692"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Low Power Profile Transposer. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ae636173d5936adbed995a1352e72a997"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae636173d5936adbed995a1352e72a997">&#9670;&nbsp;</a></span>SHIFT_START_SB</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SHIFT_START_SB&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>lowest subband of source range </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a2c11ee3203b158784887c3217904d8e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c11ee3203b158784887c3217904d8e0">&#9670;&nbsp;</a></span>createLppTransposer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SBR_ERROR createLppTransposer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a>&#160;</td>
          <td class="paramname"><em>hLppTrans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_t_r_a_n_s_p_o_s_e_r___s_e_t_t_i_n_g_s.html">TRANSPOSER_SETTINGS</a> *&#160;</td>
          <td class="paramname"><em>pSettings</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>highBandStartSb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *&#160;</td>
          <td class="paramname"><em>v_k_master</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>numMaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>usb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>timeSlots</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>nCols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *&#160;</td>
          <td class="paramname"><em>noiseBandTable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>noNoiseBands</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#afff0ab3629a68bc1bb3b2a2f4296173f">UINT</a>&#160;</td>
          <td class="paramname"><em>fs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>chan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>overlap</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize one low power transposer instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hLppTrans</td><td>Handle of low power transposer </td></tr>
    <tr><td class="paramname">pSettings</td><td>Pointer to settings </td></tr>
    <tr><td class="paramname">highBandStartSb</td><td>? </td></tr>
    <tr><td class="paramname">v_k_master</td><td>Master table </td></tr>
    <tr><td class="paramname">numMaster</td><td>Valid entries in master table </td></tr>
    <tr><td class="paramname">usb</td><td>Highband area stop subband </td></tr>
    <tr><td class="paramname">timeSlots</td><td>Number of time slots </td></tr>
    <tr><td class="paramname">nCols</td><td>Number of colums (codec qmf bank) </td></tr>
    <tr><td class="paramname">noiseBandTable</td><td>Mapping of SBR noise bands to QMF bands </td></tr>
    <tr><td class="paramname">noNoiseBands</td><td>Number of noise bands </td></tr>
    <tr><td class="paramname">fs</td><td>Sample Frequency </td></tr>
    <tr><td class="paramname">chan</td><td>Channel number </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0ae9b351ec62b7898db3f2d487622ffe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ae9b351ec62b7898db3f2d487622ffe">&#9670;&nbsp;</a></span>lppTransposer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lppTransposer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a>&#160;</td>
          <td class="paramname"><em>hLppTrans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_q_m_f___s_c_a_l_e___f_a_c_t_o_r.html">QMF_SCALE_FACTOR</a> *&#160;</td>
          <td class="paramname"><em>sbrScaleFactor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FIXP_DBL **&#160;</td>
          <td class="paramname"><em>qmfBufferReal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FIXP_DBL *&#160;</td>
          <td class="paramname"><em>degreeAlias</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FIXP_DBL **&#160;</td>
          <td class="paramname"><em>qmfBufferImag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>useLP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>fPreWhitening</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>v_k_master0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>timeStep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>firstSlotOffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>lastSlotOffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>nInvfBands</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">INVF_MODE *&#160;</td>
          <td class="paramname"><em>sbr_invf_mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">INVF_MODE *&#160;</td>
          <td class="paramname"><em>sbr_invf_mode_prev</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Perform transposition by patching of subband samples. This function serves as the main entry point into the module. The function determines the areas for the patching process (these are the source range as well as the target range) and implements spectral whitening by means of inverse filtering. The function autoCorrelation2nd() is an auxiliary function for calculating the LPC coefficients for the filtering. The actual calculation of the LPC coefficients and the implementation of the filtering are done as part of <a class="el" href="lpp__tran_8cpp.html#a524aa88f1bd2cedb437ca6cde8a65cdb" title="Perform transposition by patching of subband samples. This function serves as the main entry point in...">lppTransposer()</a>. </p>
<p>Note that the filtering is done on all available QMF subsamples, whereas the patching is only done on those QMF subsamples that will be used in the next QMF synthesis. The filtering is also implemented before the patching includes further dependencies on parameters from the SBR data. </p>
<p>&lt; pole moving factors</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hLppTrans</td><td>Handle of lpp transposer </td></tr>
    <tr><td class="paramname">sbrScaleFactor</td><td>Scaling factors </td></tr>
    <tr><td class="paramname">qmfBufferReal</td><td>Pointer to pointer to real part of subband samples (source) </td></tr>
    <tr><td class="paramname">degreeAlias</td><td>Vector for results of aliasing estimation </td></tr>
    <tr><td class="paramname">qmfBufferImag</td><td>Pointer to pointer to imaginary part of subband samples (source) </td></tr>
    <tr><td class="paramname">timeStep</td><td>Time step of envelope </td></tr>
    <tr><td class="paramname">firstSlotOffs</td><td>Start position in time </td></tr>
    <tr><td class="paramname">lastSlotOffs</td><td>Number of overlap-slots into next frame </td></tr>
    <tr><td class="paramname">nInvfBands</td><td>Number of bands for inverse filtering </td></tr>
    <tr><td class="paramname">sbr_invf_mode</td><td>Current inverse filtering modes </td></tr>
    <tr><td class="paramname">sbr_invf_mode_prev</td><td>Previous inverse filtering modes </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aaefb4bb18220fd6159e63fd01f14fc77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaefb4bb18220fd6159e63fd01f14fc77">&#9670;&nbsp;</a></span>lppTransposerHBE()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lppTransposerHBE </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a>&#160;</td>
          <td class="paramname"><em>hLppTrans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structhbe_transposer.html">HANDLE_HBE_TRANSPOSER</a>&#160;</td>
          <td class="paramname"><em>hQmfTransposer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_q_m_f___s_c_a_l_e___f_a_c_t_o_r.html">QMF_SCALE_FACTOR</a> *&#160;</td>
          <td class="paramname"><em>sbrScaleFactor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FIXP_DBL **&#160;</td>
          <td class="paramname"><em>qmfBufferReal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FIXP_DBL **&#160;</td>
          <td class="paramname"><em>qmfBufferImag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>timeStep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>firstSlotOffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>lastSlotOffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>nInvfBands</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">INVF_MODE *&#160;</td>
          <td class="paramname"><em>sbr_invf_mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">INVF_MODE *&#160;</td>
          <td class="paramname"><em>sbr_invf_mode_prev</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>&lt; pole moving factors</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hLppTrans</td><td>Handle of lpp transposer </td></tr>
    <tr><td class="paramname">sbrScaleFactor</td><td>Scaling factors </td></tr>
    <tr><td class="paramname">qmfBufferReal</td><td>Pointer to pointer to real part of subband samples (source) </td></tr>
    <tr><td class="paramname">qmfBufferImag</td><td>Pointer to pointer to imaginary part of subband samples (source) </td></tr>
    <tr><td class="paramname">timeStep</td><td>Time step of envelope </td></tr>
    <tr><td class="paramname">firstSlotOffs</td><td>Start position in time </td></tr>
    <tr><td class="paramname">lastSlotOffs</td><td>Number of overlap-slots into next frame </td></tr>
    <tr><td class="paramname">nInvfBands</td><td>Number of bands for inverse filtering </td></tr>
    <tr><td class="paramname">sbr_invf_mode</td><td>Current inverse filtering modes </td></tr>
    <tr><td class="paramname">sbr_invf_mode_prev</td><td>Previous inverse filtering modes </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a13e3d09ebd3d5afe2118961ee9483692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13e3d09ebd3d5afe2118961ee9483692">&#9670;&nbsp;</a></span>resetLppTransposer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SBR_ERROR resetLppTransposer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___l_p_p___t_r_a_n_s.html">HANDLE_SBR_LPP_TRANS</a>&#160;</td>
          <td class="paramname"><em>hLppTrans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a>&#160;</td>
          <td class="paramname"><em>highBandStartSb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *&#160;</td>
          <td class="paramname"><em>v_k_master</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a>&#160;</td>
          <td class="paramname"><em>numMaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a> *&#160;</td>
          <td class="paramname"><em>noiseBandTable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a>&#160;</td>
          <td class="paramname"><em>noNoiseBands</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#aed5a2dbe32af3a91203f0f5e8697e873">UCHAR</a>&#160;</td>
          <td class="paramname"><em>usb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="machine__type_8h.html#afff0ab3629a68bc1bb3b2a2f4296173f">UINT</a>&#160;</td>
          <td class="paramname"><em>fs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reset memory for one lpp transposer instance. </p>
<dl class="section return"><dt>Returns</dt><dd>SBRDEC_OK on success, SBRDEC_UNSUPPORTED_CONFIG on error </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hLppTrans</td><td>Handle of lpp transposer </td></tr>
    <tr><td class="paramname">highBandStartSb</td><td>High band area: start subband </td></tr>
    <tr><td class="paramname">v_k_master</td><td>Master table </td></tr>
    <tr><td class="paramname">numMaster</td><td>Valid entries in master table </td></tr>
    <tr><td class="paramname">noiseBandTable</td><td>Mapping of SBR noise bands to QMF bands </td></tr>
    <tr><td class="paramname">noNoiseBands</td><td>Number of noise bands </td></tr>
    <tr><td class="paramname">usb</td><td>High band area: stop subband </td></tr>
    <tr><td class="paramname">fs</td><td>SBR output sampling frequency </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
